The need to make optimizing changes to the design of a data processing device for the purpose of correcting or improving a characteristic of the device is well known. In addition, it is often desirable for such a change to not affect the logical functionality of the device. For example, it may be desirable to change a particular design implementation that is correct logically because it has a logic portion that demonstrates an undesirable characteristic, such as occupying too much area, consuming too much power, contributing to a timing failure (i.e. a propagation delay error and race conditions), or contributing too much noise.
One known optimization technique used to optimize portions of a design is a redundant addition/removal method. An addition/removal method corrects undesirable characteristics associated with a target portion of a device by first adding and then removing redundant logic. More specifically, the addition/removal method includes adding logic that is redundant in presence of the target portion of the design, where the target portion of a design is that portion that demonstrates or contributes to the characteristic to be optimized. This addition of redundant logic is accomplished by adding a new gate with support for existing nodes of the design, or by adding an additional fan-in to an existing gate to accommodate a redundant feature. During each iteration of this technique, some simple redundant logic is added in the design so that the target logic becomes redundant. Once the desired optimization constraints are met by the addition of a redundant logic portion, the target portion can be removed.
While the addition/removal method can be used to identify redundancies that can replace simple design portions, such as specific wires, the addition/removal methods are limited to identifying corrections that are redundant with the target element being replaced. Therefore, a method and/or system that could optimize more complex design portions as well as identifying replacement logic that is not redundant would be useful.